﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Mysoft.QuickCode.Common
{
    /// <summary>
    /// String类型扩展方法
    /// </summary>    
    public static class StringExtension
    {
        /// <summary>
        /// 字符串转换为GUID，如果无法转换成功则返回指定默认值。
        /// </summary>
        /// <param name="s"></param>
        /// <param name="defaultValue">默认值</param>
        /// <returns></returns>
        public static Guid ToDefault(this string s, Guid defaultValue)
        {
            try
            {
                return string.IsNullOrEmpty(s) ? defaultValue : new Guid(s);
            }
            catch
            {
                return defaultValue;
            }
        }

        /// <summary>
        /// 字符串转换为int，如果无法转换成功则返回指定默认值。
        /// </summary>
        /// <param name="s"></param>
        /// <param name="defaultValue">默认值</param>
        /// <returns></returns>
        public static int ToDefault(this string s, int defaultValue)
        {
            int v = 0;
            if (int.TryParse(s, out v))
            {
                return v;
            }
            else
            {
                return defaultValue;
            }
        }

        ///// <summary>
        ///// 判断字符串是否为纯数字（小数和整数）
        ///// </summary>
        ///// <param name="s"></param>
        ///// <param name="ignoreZeroStarted">是否忽略0开头的字符串？如果为false，则01、00.1、01.1等会被当作非纯数字字符串。</param>
        ///// <returns></returns>
        //public static bool IsNumeric(this string s, bool ignoreZeroStarted = true)
        //{
        //    if (ignoreZeroStarted)
        //    {
        //        if (string.IsNullOrEmpty(s))
        //        {
        //            return false;
        //        }

        //        string[] parts = s.Split('.');
        //        if (parts.Length > 2)
        //        {
        //            return false;
        //        }

        //        if (parts[0].StartsWith("0") && parts[0].Length > 1)
        //        {
        //            return false;
        //        }

        //        if (new Regex("^[0-9]+$").IsMatch(parts[0]) == false)
        //        {
        //            return false;
        //        }
        //        if (parts.Length == 2 && new Regex("^[0-9]+$").IsMatch(parts[1]) == false)
        //        {
        //            return false;
        //        }

        //        return true;
        //    }
        //    else
        //    {
        //        return new Regex("^[0-9]+$").IsMatch(s);
        //    }
        //}
    }
}
